/*
 * Copyright 2018 JDCLOUD.COM
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *    http:#www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 *
 * 分布式云物理服务器
 * 分布式云物理服务器相关接口
 *
 * OpenAPI spec version: v1
 * Contact: 
 *
 * NOTE: This class is auto generated by the jdcloud code generator program.
 */


using JDCloudSDK.Core.Auth;
using JDCloudSDK.Core.Client;
using JDCloudSDK.Core.Http;
using JDCloudSDK.Edcps.Apis;
using JDCloudSDK.Edcps.Model;
using System;
using System.Collections.Generic;
using System.Text;
#if NET40||NET35
#else
using System.Threading.Tasks;
#endif

namespace JDCloudSDK.Edcps.Client
{
    /// <summary>
    ///  分布式云物理服务器
    ///  分布式云物理服务器相关接口
    ///  Edcps Api 客户端
    ///</summary>
    public class EdcpsClient : JdcloudClient
    {

        /// <summary>
        ///  默认私有构造函数
        /// </summary>
        private EdcpsClient()
        {

        }

        /// <summary>
        /// 默认构造函数
        /// </summary>
        /// <param name="credentialsProvider">认证信息</param>
        /// <param name="httpRequestConfig">http 客户端配置信息</param>
        /// <param name="environment">sdk 环境配置信息</param>
        public EdcpsClient(CredentialsProvider credentialsProvider, HttpRequestConfig httpRequestConfig,SDKEnvironment environment)
        {
            this.httpRequestConfig = httpRequestConfig;
            this.credentialsProvider = credentialsProvider;
            this.environment = environment;
        }

        /// <summary>
        /// 默认构造函数
        /// </summary>
        /// <param name="httpRequestConfig">http 客户端配置信息</param>
        /// <param name="credentialsProvider">认证信息</param>
        public EdcpsClient(CredentialsProvider credentialsProvider,HttpRequestConfig httpRequestConfig)
        {
            this.httpRequestConfig = httpRequestConfig;
            this.credentialsProvider = credentialsProvider;
        }

        /// <summary>
        /// 默认构造函数，
        /// 注意如果使用此方法 httpRequestConfig 使用的http 请求 schema 为Https
        /// </summary>
        /// <param name="credentialsProvider">认证信息</param>
        public EdcpsClient(CredentialsProvider credentialsProvider)
        {
            this.credentialsProvider = credentialsProvider;
        }

        /// <summary>
        ///  版本号 1.2.3
        ///</summary>
        public const string ClientVersion = "1.2.3";

        private const string apiVersion = "v1";
        private const string userAgentPrefix = "JdcloudSdkDotNet";
        private const string defaultEndpoint = "edcps.jdcloud-api.com";
        private const string serviceName = "edcps";
        private const string userAgent = userAgentPrefix + "/" + ClientVersion + " " + serviceName + "/" + apiVersion;


        private SDKEnvironment environment = new SDKEnvironment(defaultEndpoint);
        private CredentialsProvider credentialsProvider;
        private HttpRequestConfig httpRequestConfig;

        /// <summary>
        ///  获取证书信息
        ///</summary>
        public override CredentialsProvider CredentialsProvider   { get { return credentialsProvider; } }

        /// <summary>
        ///  获取http 客户端配置信息
        ///</summary>
        public override HttpRequestConfig HttpRequestConfig { get { return httpRequestConfig; } }

        /// <summary>
        ///  获取sdk环境配置信息
        ///</summary>
        public override SDKEnvironment SDKEnvironment { get { return environment; } }

        /// <summary>
        ///  获取用户自定义浏览器识别字符串
        ///</summary>
        public override string UserAgent { get { return userAgent; } }

        /// <summary>
        ///  获取服务名称
        ///</summary>
        public override string ServiceName { get { return serviceName; } }

        /// <summary>
        ///  获取版本号
        ///</summary>
        public override string Version { get { return apiVersion; } }



#if NET40||NET35
        /// <summary>
        ///  修改分布式云物理服务器部分信息，包括名称、描述
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public ModifyInstanceResponse ModifyInstance(ModifyInstanceRequest request) {
            return  new ModifyInstanceExecutor().Client(this).Execute<ModifyInstanceResponse, ModifyInstanceResult, ModifyInstanceRequest>(request);
        }
#else
        /// <summary>
        ///  修改分布式云物理服务器部分信息，包括名称、描述
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public async Task<ModifyInstanceResponse> ModifyInstance(ModifyInstanceRequest request) {
            return await new ModifyInstanceExecutor().Client(this).Execute<ModifyInstanceResponse, ModifyInstanceResult, ModifyInstanceRequest>(request).ConfigureAwait(false);
        }
#endif
#if NET40||NET35
        /// <summary>
        ///  解绑弹性公网IP
        /// 
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public DisassociateElasticIpResponse DisassociateElasticIp(DisassociateElasticIpRequest request) {
            return  new DisassociateElasticIpExecutor().Client(this).Execute<DisassociateElasticIpResponse, DisassociateElasticIpResult, DisassociateElasticIpRequest>(request);
        }
#else
        /// <summary>
        ///  解绑弹性公网IP
        /// 
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public async Task<DisassociateElasticIpResponse> DisassociateElasticIp(DisassociateElasticIpRequest request) {
            return await new DisassociateElasticIpExecutor().Client(this).Execute<DisassociateElasticIpResponse, DisassociateElasticIpResult, DisassociateElasticIpRequest>(request).ConfigureAwait(false);
        }
#endif
#if NET40||NET35
        /// <summary>
        ///  查询弹性公网IP列表&lt;br/&gt;
        /// 支持分页查询，默认每页20条&lt;br/&gt;
        /// 
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public DescribeElasticIpsResponse DescribeElasticIps(DescribeElasticIpsRequest request) {
            return  new DescribeElasticIpsExecutor().Client(this).Execute<DescribeElasticIpsResponse, DescribeElasticIpsResult, DescribeElasticIpsRequest>(request);
        }
#else
        /// <summary>
        ///  查询弹性公网IP列表&lt;br/&gt;
        /// 支持分页查询，默认每页20条&lt;br/&gt;
        /// 
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public async Task<DescribeElasticIpsResponse> DescribeElasticIps(DescribeElasticIpsRequest request) {
            return await new DescribeElasticIpsExecutor().Client(this).Execute<DescribeElasticIpsResponse, DescribeElasticIpsResult, DescribeElasticIpsRequest>(request).ConfigureAwait(false);
        }
#endif
#if NET40||NET35
        /// <summary>
        ///  查询分布式云物理服务器支持的操作系统
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public DescribeOSResponse DescribeOS(DescribeOSRequest request) {
            return  new DescribeOSExecutor().Client(this).Execute<DescribeOSResponse, DescribeOSResult, DescribeOSRequest>(request);
        }
#else
        /// <summary>
        ///  查询分布式云物理服务器支持的操作系统
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public async Task<DescribeOSResponse> DescribeOS(DescribeOSRequest request) {
            return await new DescribeOSExecutor().Client(this).Execute<DescribeOSResponse, DescribeOSResult, DescribeOSRequest>(request).ConfigureAwait(false);
        }
#endif
#if NET40||NET35
        /// <summary>
        ///  查询分布式云物理服务器实例类型
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public DescribeDeviceTypesResponse DescribeDeviceTypes(DescribeDeviceTypesRequest request) {
            return  new DescribeDeviceTypesExecutor().Client(this).Execute<DescribeDeviceTypesResponse, DescribeDeviceTypesResult, DescribeDeviceTypesRequest>(request);
        }
#else
        /// <summary>
        ///  查询分布式云物理服务器实例类型
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public async Task<DescribeDeviceTypesResponse> DescribeDeviceTypes(DescribeDeviceTypesRequest request) {
            return await new DescribeDeviceTypesExecutor().Client(this).Execute<DescribeDeviceTypesResponse, DescribeDeviceTypesResult, DescribeDeviceTypesRequest>(request).ConfigureAwait(false);
        }
#endif
#if NET40||NET35
        /// <summary>
        ///  删除别名IP
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public DeleteAliasIpResponse DeleteAliasIp(DeleteAliasIpRequest request) {
            return  new DeleteAliasIpExecutor().Client(this).Execute<DeleteAliasIpResponse, DeleteAliasIpResult, DeleteAliasIpRequest>(request);
        }
#else
        /// <summary>
        ///  删除别名IP
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public async Task<DeleteAliasIpResponse> DeleteAliasIp(DeleteAliasIpRequest request) {
            return await new DeleteAliasIpExecutor().Client(this).Execute<DeleteAliasIpResponse, DeleteAliasIpResult, DeleteAliasIpRequest>(request).ConfigureAwait(false);
        }
#endif
#if NET40||NET35
        /// <summary>
        ///  修改弹性公网IP带宽
        /// 
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public ModifyElasticIpBandwidthResponse ModifyElasticIpBandwidth(ModifyElasticIpBandwidthRequest request) {
            return  new ModifyElasticIpBandwidthExecutor().Client(this).Execute<ModifyElasticIpBandwidthResponse, ModifyElasticIpBandwidthResult, ModifyElasticIpBandwidthRequest>(request);
        }
#else
        /// <summary>
        ///  修改弹性公网IP带宽
        /// 
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public async Task<ModifyElasticIpBandwidthResponse> ModifyElasticIpBandwidth(ModifyElasticIpBandwidthRequest request) {
            return await new ModifyElasticIpBandwidthExecutor().Client(this).Execute<ModifyElasticIpBandwidthResponse, ModifyElasticIpBandwidthResult, ModifyElasticIpBandwidthRequest>(request).ConfigureAwait(false);
        }
#endif
#if NET40||NET35
        /// <summary>
        ///  查询单个分布式云物理服务器已安装的RAID信息，包括系统盘RAID信息和数据盘RAID信息
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public DescribeInstanceRaidResponse DescribeInstanceRaid(DescribeInstanceRaidRequest request) {
            return  new DescribeInstanceRaidExecutor().Client(this).Execute<DescribeInstanceRaidResponse, DescribeInstanceRaidResult, DescribeInstanceRaidRequest>(request);
        }
#else
        /// <summary>
        ///  查询单个分布式云物理服务器已安装的RAID信息，包括系统盘RAID信息和数据盘RAID信息
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public async Task<DescribeInstanceRaidResponse> DescribeInstanceRaid(DescribeInstanceRaidRequest request) {
            return await new DescribeInstanceRaidExecutor().Client(this).Execute<DescribeInstanceRaidResponse, DescribeInstanceRaidResult, DescribeInstanceRaidRequest>(request).ConfigureAwait(false);
        }
#endif
#if NET40||NET35
        /// <summary>
        ///  删除私有网络
        /// 
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public DeleteVpcResponse DeleteVpc(DeleteVpcRequest request) {
            return  new DeleteVpcExecutor().Client(this).Execute<DeleteVpcResponse, DeleteVpcResult, DeleteVpcRequest>(request);
        }
#else
        /// <summary>
        ///  删除私有网络
        /// 
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public async Task<DeleteVpcResponse> DeleteVpc(DeleteVpcRequest request) {
            return await new DeleteVpcExecutor().Client(this).Execute<DeleteVpcResponse, DeleteVpcResult, DeleteVpcRequest>(request).ConfigureAwait(false);
        }
#endif
#if NET40||NET35
        /// <summary>
        ///  查询子网详情
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public DescribeSubnetResponse DescribeSubnet(DescribeSubnetRequest request) {
            return  new DescribeSubnetExecutor().Client(this).Execute<DescribeSubnetResponse, DescribeSubnetResult, DescribeSubnetRequest>(request);
        }
#else
        /// <summary>
        ///  查询子网详情
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public async Task<DescribeSubnetResponse> DescribeSubnet(DescribeSubnetRequest request) {
            return await new DescribeSubnetExecutor().Client(this).Execute<DescribeSubnetResponse, DescribeSubnetResult, DescribeSubnetRequest>(request).ConfigureAwait(false);
        }
#endif
#if NET40||NET35
        /// <summary>
        ///  查询别名IP列表
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public DescribeAliasIpsResponse DescribeAliasIps(DescribeAliasIpsRequest request) {
            return  new DescribeAliasIpsExecutor().Client(this).Execute<DescribeAliasIpsResponse, DescribeAliasIpsResult, DescribeAliasIpsRequest>(request);
        }
#else
        /// <summary>
        ///  查询别名IP列表
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public async Task<DescribeAliasIpsResponse> DescribeAliasIps(DescribeAliasIpsRequest request) {
            return await new DescribeAliasIpsExecutor().Client(this).Execute<DescribeAliasIpsResponse, DescribeAliasIpsResult, DescribeAliasIpsRequest>(request).ConfigureAwait(false);
        }
#endif
#if NET40||NET35
        /// <summary>
        ///  查询链路类型
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public DescribeLineTypesResponse DescribeLineTypes(DescribeLineTypesRequest request) {
            return  new DescribeLineTypesExecutor().Client(this).Execute<DescribeLineTypesResponse, DescribeLineTypesResult, DescribeLineTypesRequest>(request);
        }
#else
        /// <summary>
        ///  查询链路类型
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public async Task<DescribeLineTypesResponse> DescribeLineTypes(DescribeLineTypesRequest request) {
            return await new DescribeLineTypesExecutor().Client(this).Execute<DescribeLineTypesResponse, DescribeLineTypesResult, DescribeLineTypesRequest>(request).ConfigureAwait(false);
        }
#endif
#if NET40||NET35
        /// <summary>
        ///  查询密钥对列表
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public DescribeKeypairsResponse DescribeKeypairs(DescribeKeypairsRequest request) {
            return  new DescribeKeypairsExecutor().Client(this).Execute<DescribeKeypairsResponse, DescribeKeypairsResult, DescribeKeypairsRequest>(request);
        }
#else
        /// <summary>
        ///  查询密钥对列表
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public async Task<DescribeKeypairsResponse> DescribeKeypairs(DescribeKeypairsRequest request) {
            return await new DescribeKeypairsExecutor().Client(this).Execute<DescribeKeypairsResponse, DescribeKeypairsResult, DescribeKeypairsRequest>(request).ConfigureAwait(false);
        }
#endif
#if NET40||NET35
        /// <summary>
        ///  查询密钥对详情
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public DescribeKeypairResponse DescribeKeypair(DescribeKeypairRequest request) {
            return  new DescribeKeypairExecutor().Client(this).Execute<DescribeKeypairResponse, DescribeKeypairResult, DescribeKeypairRequest>(request);
        }
#else
        /// <summary>
        ///  查询密钥对详情
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public async Task<DescribeKeypairResponse> DescribeKeypair(DescribeKeypairRequest request) {
            return await new DescribeKeypairExecutor().Client(this).Execute<DescribeKeypairResponse, DescribeKeypairResult, DescribeKeypairRequest>(request).ConfigureAwait(false);
        }
#endif
#if NET40||NET35
        /// <summary>
        ///  绑定弹性公网IP
        /// 
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public AssociateElasticIpResponse AssociateElasticIp(AssociateElasticIpRequest request) {
            return  new AssociateElasticIpExecutor().Client(this).Execute<AssociateElasticIpResponse, AssociateElasticIpResult, AssociateElasticIpRequest>(request);
        }
#else
        /// <summary>
        ///  绑定弹性公网IP
        /// 
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public async Task<AssociateElasticIpResponse> AssociateElasticIp(AssociateElasticIpRequest request) {
            return await new AssociateElasticIpExecutor().Client(this).Execute<AssociateElasticIpResponse, AssociateElasticIpResult, AssociateElasticIpRequest>(request).ConfigureAwait(false);
        }
#endif
#if NET40||NET35
        /// <summary>
        ///  查询次要CIDR列表
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public DescribeSecondaryCidrsResponse DescribeSecondaryCidrs(DescribeSecondaryCidrsRequest request) {
            return  new DescribeSecondaryCidrsExecutor().Client(this).Execute<DescribeSecondaryCidrsResponse, DescribeSecondaryCidrsResult, DescribeSecondaryCidrsRequest>(request);
        }
#else
        /// <summary>
        ///  查询次要CIDR列表
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public async Task<DescribeSecondaryCidrsResponse> DescribeSecondaryCidrs(DescribeSecondaryCidrsRequest request) {
            return await new DescribeSecondaryCidrsExecutor().Client(this).Execute<DescribeSecondaryCidrsResponse, DescribeSecondaryCidrsResult, DescribeSecondaryCidrsRequest>(request).ConfigureAwait(false);
        }
#endif
#if NET40||NET35
        /// <summary>
        ///  创建一台或多台指定配置的分布式云物理服务器&lt;br/&gt;
        /// - 地域与可用区&lt;br/&gt;
        ///   - 调用接口（queryEdCPSRegions）获取分布式云物理服务器支持的地域与可用区&lt;br/&gt;
        /// - 实例类型&lt;br/&gt;
        ///   - 调用接口（describeDeviceTypes）获取物理实例类型列表&lt;br/&gt;
        ///   - 不能使用已下线、或已售馨的实例类型&lt;br/&gt;
        /// - 操作系统&lt;br/&gt;
        ///   - 可调用接口（describeOS）获取分布式云物理服务器支持的操作系统列表&lt;br/&gt;
        /// - 存储&lt;br/&gt;
        ///   - 数据盘多种RAID可选，可调用接口（describeDeviceRaids）获取服务器支持的RAID列表&lt;br/&gt;
        /// - 网络&lt;br/&gt;
        ///   - 网络类型目前支持vpc&lt;br/&gt;
        ///   - 线路目前支持联通un、电信ct、移动cm&lt;br/&gt;
        ///   - 支持不启用外网，如果启用外网，带宽范围[1,200] 单位Mbps&lt;br/&gt;
        /// - 其他&lt;br/&gt;
        ///   - 购买时长，可按年或月购买：月取值范围[1,9], 年取值范围[1,3]&lt;br/&gt;
        ///   - 密码设置参考公共参数规范&lt;br/&gt;
        /// 
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public CreateInstancesResponse CreateInstances(CreateInstancesRequest request) {
            return  new CreateInstancesExecutor().Client(this).Execute<CreateInstancesResponse, CreateInstancesResult, CreateInstancesRequest>(request);
        }
#else
        /// <summary>
        ///  创建一台或多台指定配置的分布式云物理服务器&lt;br/&gt;
        /// - 地域与可用区&lt;br/&gt;
        ///   - 调用接口（queryEdCPSRegions）获取分布式云物理服务器支持的地域与可用区&lt;br/&gt;
        /// - 实例类型&lt;br/&gt;
        ///   - 调用接口（describeDeviceTypes）获取物理实例类型列表&lt;br/&gt;
        ///   - 不能使用已下线、或已售馨的实例类型&lt;br/&gt;
        /// - 操作系统&lt;br/&gt;
        ///   - 可调用接口（describeOS）获取分布式云物理服务器支持的操作系统列表&lt;br/&gt;
        /// - 存储&lt;br/&gt;
        ///   - 数据盘多种RAID可选，可调用接口（describeDeviceRaids）获取服务器支持的RAID列表&lt;br/&gt;
        /// - 网络&lt;br/&gt;
        ///   - 网络类型目前支持vpc&lt;br/&gt;
        ///   - 线路目前支持联通un、电信ct、移动cm&lt;br/&gt;
        ///   - 支持不启用外网，如果启用外网，带宽范围[1,200] 单位Mbps&lt;br/&gt;
        /// - 其他&lt;br/&gt;
        ///   - 购买时长，可按年或月购买：月取值范围[1,9], 年取值范围[1,3]&lt;br/&gt;
        ///   - 密码设置参考公共参数规范&lt;br/&gt;
        /// 
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public async Task<CreateInstancesResponse> CreateInstances(CreateInstancesRequest request) {
            return await new CreateInstancesExecutor().Client(this).Execute<CreateInstancesResponse, CreateInstancesResult, CreateInstancesRequest>(request).ConfigureAwait(false);
        }
#endif
#if NET40||NET35
        /// <summary>
        ///  查询可用的私有IP列表
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public DescribeAvailablePrivateIpResponse DescribeAvailablePrivateIp(DescribeAvailablePrivateIpRequest request) {
            return  new DescribeAvailablePrivateIpExecutor().Client(this).Execute<DescribeAvailablePrivateIpResponse, DescribeAvailablePrivateIpResult, DescribeAvailablePrivateIpRequest>(request);
        }
#else
        /// <summary>
        ///  查询可用的私有IP列表
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public async Task<DescribeAvailablePrivateIpResponse> DescribeAvailablePrivateIp(DescribeAvailablePrivateIpRequest request) {
            return await new DescribeAvailablePrivateIpExecutor().Client(this).Execute<DescribeAvailablePrivateIpResponse, DescribeAvailablePrivateIpResult, DescribeAvailablePrivateIpRequest>(request).ConfigureAwait(false);
        }
#endif
#if NET40||NET35
        /// <summary>
        ///  查询共享带宽库存
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public DescribeBandwidthPackageStockResponse DescribeBandwidthPackageStock(DescribeBandwidthPackageStockRequest request) {
            return  new DescribeBandwidthPackageStockExecutor().Client(this).Execute<DescribeBandwidthPackageStockResponse, DescribeBandwidthPackageStockResult, DescribeBandwidthPackageStockRequest>(request);
        }
#else
        /// <summary>
        ///  查询共享带宽库存
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public async Task<DescribeBandwidthPackageStockResponse> DescribeBandwidthPackageStock(DescribeBandwidthPackageStockRequest request) {
            return await new DescribeBandwidthPackageStockExecutor().Client(this).Execute<DescribeBandwidthPackageStockResponse, DescribeBandwidthPackageStockResult, DescribeBandwidthPackageStockRequest>(request).ConfigureAwait(false);
        }
#endif
#if NET40||NET35
        /// <summary>
        ///  查询共享带宽详情
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public DescribeBandwidthPackageResponse DescribeBandwidthPackage(DescribeBandwidthPackageRequest request) {
            return  new DescribeBandwidthPackageExecutor().Client(this).Execute<DescribeBandwidthPackageResponse, DescribeBandwidthPackageResult, DescribeBandwidthPackageRequest>(request);
        }
#else
        /// <summary>
        ///  查询共享带宽详情
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public async Task<DescribeBandwidthPackageResponse> DescribeBandwidthPackage(DescribeBandwidthPackageRequest request) {
            return await new DescribeBandwidthPackageExecutor().Client(this).Execute<DescribeBandwidthPackageResponse, DescribeBandwidthPackageResult, DescribeBandwidthPackageRequest>(request).ConfigureAwait(false);
        }
#endif
#if NET40||NET35
        /// <summary>
        ///  重置分布式云物理服务器密码
        /// 
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public ResetPasswordResponse ResetPassword(ResetPasswordRequest request) {
            return  new ResetPasswordExecutor().Client(this).Execute<ResetPasswordResponse, ResetPasswordResult, ResetPasswordRequest>(request);
        }
#else
        /// <summary>
        ///  重置分布式云物理服务器密码
        /// 
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public async Task<ResetPasswordResponse> ResetPassword(ResetPasswordRequest request) {
            return await new ResetPasswordExecutor().Client(this).Execute<ResetPasswordResponse, ResetPasswordResult, ResetPasswordRequest>(request).ConfigureAwait(false);
        }
#endif
#if NET40||NET35
        /// <summary>
        ///  查询弹性公网IP详情
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public DescribeElasticIpResponse DescribeElasticIp(DescribeElasticIpRequest request) {
            return  new DescribeElasticIpExecutor().Client(this).Execute<DescribeElasticIpResponse, DescribeElasticIpResult, DescribeElasticIpRequest>(request);
        }
#else
        /// <summary>
        ///  查询弹性公网IP详情
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public async Task<DescribeElasticIpResponse> DescribeElasticIp(DescribeElasticIpRequest request) {
            return await new DescribeElasticIpExecutor().Client(this).Execute<DescribeElasticIpResponse, DescribeElasticIpResult, DescribeElasticIpRequest>(request).ConfigureAwait(false);
        }
#endif
#if NET40||NET35
        /// <summary>
        ///  删除密钥对
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public DeleteKeypairsResponse DeleteKeypairs(DeleteKeypairsRequest request) {
            return  new DeleteKeypairsExecutor().Client(this).Execute<DeleteKeypairsResponse, DeleteKeypairsResult, DeleteKeypairsRequest>(request);
        }
#else
        /// <summary>
        ///  删除密钥对
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public async Task<DeleteKeypairsResponse> DeleteKeypairs(DeleteKeypairsRequest request) {
            return await new DeleteKeypairsExecutor().Client(this).Execute<DeleteKeypairsResponse, DeleteKeypairsResult, DeleteKeypairsRequest>(request).ConfigureAwait(false);
        }
#endif
#if NET40||NET35
        /// <summary>
        ///  查询弹性公网IP列表&lt;br/&gt;
        /// 支持分页查询，默认每页20条&lt;br/&gt;
        /// 
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public DescribeBandwidthPackagesResponse DescribeBandwidthPackages(DescribeBandwidthPackagesRequest request) {
            return  new DescribeBandwidthPackagesExecutor().Client(this).Execute<DescribeBandwidthPackagesResponse, DescribeBandwidthPackagesResult, DescribeBandwidthPackagesRequest>(request);
        }
#else
        /// <summary>
        ///  查询弹性公网IP列表&lt;br/&gt;
        /// 支持分页查询，默认每页20条&lt;br/&gt;
        /// 
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public async Task<DescribeBandwidthPackagesResponse> DescribeBandwidthPackages(DescribeBandwidthPackagesRequest request) {
            return await new DescribeBandwidthPackagesExecutor().Client(this).Execute<DescribeBandwidthPackagesResponse, DescribeBandwidthPackagesResult, DescribeBandwidthPackagesRequest>(request).ConfigureAwait(false);
        }
#endif
#if NET40||NET35
        /// <summary>
        ///  对单台分布式云物理服务器执行关机操作，只能停止running状态的服务器 [MFA enabled]
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public StopInstanceResponse StopInstance(StopInstanceRequest request) {
            return  new StopInstanceExecutor().Client(this).Execute<StopInstanceResponse, StopInstanceResult, StopInstanceRequest>(request);
        }
#else
        /// <summary>
        ///  对单台分布式云物理服务器执行关机操作，只能停止running状态的服务器 [MFA enabled]
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public async Task<StopInstanceResponse> StopInstance(StopInstanceRequest request) {
            return await new StopInstanceExecutor().Client(this).Execute<StopInstanceResponse, StopInstanceResult, StopInstanceRequest>(request).ConfigureAwait(false);
        }
#endif
#if NET40||NET35
        /// <summary>
        ///  查询分布式分布式云物理服务器地域列表
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public DescribeEdCPSRegionsResponse DescribeEdCPSRegions(DescribeEdCPSRegionsRequest request) {
            return  new DescribeEdCPSRegionsExecutor().Client(this).Execute<DescribeEdCPSRegionsResponse, DescribeEdCPSRegionsResult, DescribeEdCPSRegionsRequest>(request);
        }
#else
        /// <summary>
        ///  查询分布式分布式云物理服务器地域列表
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public async Task<DescribeEdCPSRegionsResponse> DescribeEdCPSRegions(DescribeEdCPSRegionsRequest request) {
            return await new DescribeEdCPSRegionsExecutor().Client(this).Execute<DescribeEdCPSRegionsResponse, DescribeEdCPSRegionsResult, DescribeEdCPSRegionsRequest>(request).ConfigureAwait(false);
        }
#endif
#if NET40||NET35
        /// <summary>
        ///  修改共享带宽的带宽
        /// 
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public ModifyBandwidthPackageBandwidthResponse ModifyBandwidthPackageBandwidth(ModifyBandwidthPackageBandwidthRequest request) {
            return  new ModifyBandwidthPackageBandwidthExecutor().Client(this).Execute<ModifyBandwidthPackageBandwidthResponse, ModifyBandwidthPackageBandwidthResult, ModifyBandwidthPackageBandwidthRequest>(request);
        }
#else
        /// <summary>
        ///  修改共享带宽的带宽
        /// 
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public async Task<ModifyBandwidthPackageBandwidthResponse> ModifyBandwidthPackageBandwidth(ModifyBandwidthPackageBandwidthRequest request) {
            return await new ModifyBandwidthPackageBandwidthExecutor().Client(this).Execute<ModifyBandwidthPackageBandwidthResponse, ModifyBandwidthPackageBandwidthResult, ModifyBandwidthPackageBandwidthRequest>(request).ConfigureAwait(false);
        }
#endif
#if NET40||NET35
        /// <summary>
        ///  删除共享带宽
        /// 
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public DeleteBandwidthPackageResponse DeleteBandwidthPackage(DeleteBandwidthPackageRequest request) {
            return  new DeleteBandwidthPackageExecutor().Client(this).Execute<DeleteBandwidthPackageResponse, DeleteBandwidthPackageResult, DeleteBandwidthPackageRequest>(request);
        }
#else
        /// <summary>
        ///  删除共享带宽
        /// 
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public async Task<DeleteBandwidthPackageResponse> DeleteBandwidthPackage(DeleteBandwidthPackageRequest request) {
            return await new DeleteBandwidthPackageExecutor().Client(this).Execute<DeleteBandwidthPackageResponse, DeleteBandwidthPackageResult, DeleteBandwidthPackageRequest>(request).ConfigureAwait(false);
        }
#endif
#if NET40||NET35
        /// <summary>
        ///  创建密钥对
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public CreateKeypairsResponse CreateKeypairs(CreateKeypairsRequest request) {
            return  new CreateKeypairsExecutor().Client(this).Execute<CreateKeypairsResponse, CreateKeypairsResult, CreateKeypairsRequest>(request);
        }
#else
        /// <summary>
        ///  创建密钥对
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public async Task<CreateKeypairsResponse> CreateKeypairs(CreateKeypairsRequest request) {
            return await new CreateKeypairsExecutor().Client(this).Execute<CreateKeypairsResponse, CreateKeypairsResult, CreateKeypairsRequest>(request).ConfigureAwait(false);
        }
#endif
#if NET40||NET35
        /// <summary>
        ///  查询私有网络列表
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public DescribeVpcsResponse DescribeVpcs(DescribeVpcsRequest request) {
            return  new DescribeVpcsExecutor().Client(this).Execute<DescribeVpcsResponse, DescribeVpcsResult, DescribeVpcsRequest>(request);
        }
#else
        /// <summary>
        ///  查询私有网络列表
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public async Task<DescribeVpcsResponse> DescribeVpcs(DescribeVpcsRequest request) {
            return await new DescribeVpcsExecutor().Client(this).Execute<DescribeVpcsResponse, DescribeVpcsResult, DescribeVpcsRequest>(request).ConfigureAwait(false);
        }
#endif
#if NET40||NET35
        /// <summary>
        ///  查询私有网络详情
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public DescribeVpcResponse DescribeVpc(DescribeVpcRequest request) {
            return  new DescribeVpcExecutor().Client(this).Execute<DescribeVpcResponse, DescribeVpcResult, DescribeVpcRequest>(request);
        }
#else
        /// <summary>
        ///  查询私有网络详情
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public async Task<DescribeVpcResponse> DescribeVpc(DescribeVpcRequest request) {
            return await new DescribeVpcExecutor().Client(this).Execute<DescribeVpcResponse, DescribeVpcResult, DescribeVpcRequest>(request).ConfigureAwait(false);
        }
#endif
#if NET40||NET35
        /// <summary>
        ///  批量查询分布式云物理服务器详细信息&lt;br/&gt;
        /// 支持分页查询，默认每页20条&lt;br/&gt;
        /// 
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public DescribeInstancesResponse DescribeInstances(DescribeInstancesRequest request) {
            return  new DescribeInstancesExecutor().Client(this).Execute<DescribeInstancesResponse, DescribeInstancesResult, DescribeInstancesRequest>(request);
        }
#else
        /// <summary>
        ///  批量查询分布式云物理服务器详细信息&lt;br/&gt;
        /// 支持分页查询，默认每页20条&lt;br/&gt;
        /// 
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public async Task<DescribeInstancesResponse> DescribeInstances(DescribeInstancesRequest request) {
            return await new DescribeInstancesExecutor().Client(this).Execute<DescribeInstancesResponse, DescribeInstancesResult, DescribeInstancesRequest>(request).ConfigureAwait(false);
        }
#endif
#if NET40||NET35
        /// <summary>
        ///  删除单台云物理物理服务器，只能删除运行running、停止stopped、错误error状态的服务器&lt;br/&gt;
        /// 不能删除没有计费信息的服务器&lt;br/&gt;
        /// 
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public DeleteInstanceResponse DeleteInstance(DeleteInstanceRequest request) {
            return  new DeleteInstanceExecutor().Client(this).Execute<DeleteInstanceResponse, DeleteInstanceResult, DeleteInstanceRequest>(request);
        }
#else
        /// <summary>
        ///  删除单台云物理物理服务器，只能删除运行running、停止stopped、错误error状态的服务器&lt;br/&gt;
        /// 不能删除没有计费信息的服务器&lt;br/&gt;
        /// 
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public async Task<DeleteInstanceResponse> DeleteInstance(DeleteInstanceRequest request) {
            return await new DeleteInstanceExecutor().Client(this).Execute<DeleteInstanceResponse, DeleteInstanceResult, DeleteInstanceRequest>(request).ConfigureAwait(false);
        }
#endif
#if NET40||NET35
        /// <summary>
        ///  修改子网
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public ModifySubnetResponse ModifySubnet(ModifySubnetRequest request) {
            return  new ModifySubnetExecutor().Client(this).Execute<ModifySubnetResponse, ModifySubnetResult, ModifySubnetRequest>(request);
        }
#else
        /// <summary>
        ///  修改子网
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public async Task<ModifySubnetResponse> ModifySubnet(ModifySubnetRequest request) {
            return await new ModifySubnetExecutor().Client(this).Execute<ModifySubnetResponse, ModifySubnetResult, ModifySubnetRequest>(request).ConfigureAwait(false);
        }
#endif
#if NET40||NET35
        /// <summary>
        ///  查询单个分布式云物理服务器硬件监控信息
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public DescribeInstanceStatusResponse DescribeInstanceStatus(DescribeInstanceStatusRequest request) {
            return  new DescribeInstanceStatusExecutor().Client(this).Execute<DescribeInstanceStatusResponse, DescribeInstanceStatusResult, DescribeInstanceStatusRequest>(request);
        }
#else
        /// <summary>
        ///  查询单个分布式云物理服务器硬件监控信息
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public async Task<DescribeInstanceStatusResponse> DescribeInstanceStatus(DescribeInstanceStatusRequest request) {
            return await new DescribeInstanceStatusExecutor().Client(this).Execute<DescribeInstanceStatusResponse, DescribeInstanceStatusResult, DescribeInstanceStatusRequest>(request).ConfigureAwait(false);
        }
#endif
#if NET40||NET35
        /// <summary>
        ///  修改共享带宽
        /// 
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public ModifyBandwidthPackageResponse ModifyBandwidthPackage(ModifyBandwidthPackageRequest request) {
            return  new ModifyBandwidthPackageExecutor().Client(this).Execute<ModifyBandwidthPackageResponse, ModifyBandwidthPackageResult, ModifyBandwidthPackageRequest>(request);
        }
#else
        /// <summary>
        ///  修改共享带宽
        /// 
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public async Task<ModifyBandwidthPackageResponse> ModifyBandwidthPackage(ModifyBandwidthPackageRequest request) {
            return await new ModifyBandwidthPackageExecutor().Client(this).Execute<ModifyBandwidthPackageResponse, ModifyBandwidthPackageResult, ModifyBandwidthPackageRequest>(request).ConfigureAwait(false);
        }
#endif
#if NET40||NET35
        /// <summary>
        ///  删除弹性公网IP
        /// 
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public DeleteelasticIpResponse DeleteelasticIp(DeleteelasticIpRequest request) {
            return  new DeleteelasticIpExecutor().Client(this).Execute<DeleteelasticIpResponse, DeleteelasticIpResult, DeleteelasticIpRequest>(request);
        }
#else
        /// <summary>
        ///  删除弹性公网IP
        /// 
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public async Task<DeleteelasticIpResponse> DeleteelasticIp(DeleteelasticIpRequest request) {
            return await new DeleteelasticIpExecutor().Client(this).Execute<DeleteelasticIpResponse, DeleteelasticIpResult, DeleteelasticIpRequest>(request).ConfigureAwait(false);
        }
#endif
#if NET40||NET35
        /// <summary>
        ///  重启单台分布式云物理服务器，只能重启running状态的服务器 [MFA enabled]
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public RestartInstanceResponse RestartInstance(RestartInstanceRequest request) {
            return  new RestartInstanceExecutor().Client(this).Execute<RestartInstanceResponse, RestartInstanceResult, RestartInstanceRequest>(request);
        }
#else
        /// <summary>
        ///  重启单台分布式云物理服务器，只能重启running状态的服务器 [MFA enabled]
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public async Task<RestartInstanceResponse> RestartInstance(RestartInstanceRequest request) {
            return await new RestartInstanceExecutor().Client(this).Execute<RestartInstanceResponse, RestartInstanceResult, RestartInstanceRequest>(request).ConfigureAwait(false);
        }
#endif
#if NET40||NET35
        /// <summary>
        ///  查询子网列表
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public DescribeSubnetsResponse DescribeSubnets(DescribeSubnetsRequest request) {
            return  new DescribeSubnetsExecutor().Client(this).Execute<DescribeSubnetsResponse, DescribeSubnetsResult, DescribeSubnetsRequest>(request);
        }
#else
        /// <summary>
        ///  查询子网列表
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public async Task<DescribeSubnetsResponse> DescribeSubnets(DescribeSubnetsRequest request) {
            return await new DescribeSubnetsExecutor().Client(this).Execute<DescribeSubnetsResponse, DescribeSubnetsResult, DescribeSubnetsRequest>(request).ConfigureAwait(false);
        }
#endif
#if NET40||NET35
        /// <summary>
        ///  查询弹性公网IP库存
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public DescribeElasticIpStockResponse DescribeElasticIpStock(DescribeElasticIpStockRequest request) {
            return  new DescribeElasticIpStockExecutor().Client(this).Execute<DescribeElasticIpStockResponse, DescribeElasticIpStockResult, DescribeElasticIpStockRequest>(request);
        }
#else
        /// <summary>
        ///  查询弹性公网IP库存
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public async Task<DescribeElasticIpStockResponse> DescribeElasticIpStock(DescribeElasticIpStockRequest request) {
            return await new DescribeElasticIpStockExecutor().Client(this).Execute<DescribeElasticIpStockResponse, DescribeElasticIpStockResult, DescribeElasticIpStockRequest>(request).ConfigureAwait(false);
        }
#endif
#if NET40||NET35
        /// <summary>
        ///  移除共享带宽IP
        /// 
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public RemoveBandwidthPackageIpResponse RemoveBandwidthPackageIp(RemoveBandwidthPackageIpRequest request) {
            return  new RemoveBandwidthPackageIpExecutor().Client(this).Execute<RemoveBandwidthPackageIpResponse, RemoveBandwidthPackageIpResult, RemoveBandwidthPackageIpRequest>(request);
        }
#else
        /// <summary>
        ///  移除共享带宽IP
        /// 
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public async Task<RemoveBandwidthPackageIpResponse> RemoveBandwidthPackageIp(RemoveBandwidthPackageIpRequest request) {
            return await new RemoveBandwidthPackageIpExecutor().Client(this).Execute<RemoveBandwidthPackageIpResponse, RemoveBandwidthPackageIpResult, RemoveBandwidthPackageIpRequest>(request).ConfigureAwait(false);
        }
#endif
#if NET40||NET35
        /// <summary>
        ///  导入密钥对
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public ImportKeypairsResponse ImportKeypairs(ImportKeypairsRequest request) {
            return  new ImportKeypairsExecutor().Client(this).Execute<ImportKeypairsResponse, ImportKeypairsResult, ImportKeypairsRequest>(request);
        }
#else
        /// <summary>
        ///  导入密钥对
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public async Task<ImportKeypairsResponse> ImportKeypairs(ImportKeypairsRequest request) {
            return await new ImportKeypairsExecutor().Client(this).Execute<ImportKeypairsResponse, ImportKeypairsResult, ImportKeypairsRequest>(request).ConfigureAwait(false);
        }
#endif
#if NET40||NET35
        /// <summary>
        ///  对单台分布式云物理服务器执行开机操作，只能启动stopped状态的服务器
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public StartInstanceResponse StartInstance(StartInstanceRequest request) {
            return  new StartInstanceExecutor().Client(this).Execute<StartInstanceResponse, StartInstanceResult, StartInstanceRequest>(request);
        }
#else
        /// <summary>
        ///  对单台分布式云物理服务器执行开机操作，只能启动stopped状态的服务器
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public async Task<StartInstanceResponse> StartInstance(StartInstanceRequest request) {
            return await new StartInstanceExecutor().Client(this).Execute<StartInstanceResponse, StartInstanceResult, StartInstanceRequest>(request).ConfigureAwait(false);
        }
#endif
#if NET40||NET35
        /// <summary>
        ///  添加次要CIDR
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public CreateSecondaryCidrResponse CreateSecondaryCidr(CreateSecondaryCidrRequest request) {
            return  new CreateSecondaryCidrExecutor().Client(this).Execute<CreateSecondaryCidrResponse, CreateSecondaryCidrResult, CreateSecondaryCidrRequest>(request);
        }
#else
        /// <summary>
        ///  添加次要CIDR
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public async Task<CreateSecondaryCidrResponse> CreateSecondaryCidr(CreateSecondaryCidrRequest request) {
            return await new CreateSecondaryCidrExecutor().Client(this).Execute<CreateSecondaryCidrResponse, CreateSecondaryCidrResult, CreateSecondaryCidrRequest>(request).ConfigureAwait(false);
        }
#endif
#if NET40||NET35
        /// <summary>
        ///  查询分布式云物理服务器库存
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public DescribeDeviceStockResponse DescribeDeviceStock(DescribeDeviceStockRequest request) {
            return  new DescribeDeviceStockExecutor().Client(this).Execute<DescribeDeviceStockResponse, DescribeDeviceStockResult, DescribeDeviceStockRequest>(request);
        }
#else
        /// <summary>
        ///  查询分布式云物理服务器库存
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public async Task<DescribeDeviceStockResponse> DescribeDeviceStock(DescribeDeviceStockRequest request) {
            return await new DescribeDeviceStockExecutor().Client(this).Execute<DescribeDeviceStockResponse, DescribeDeviceStockResult, DescribeDeviceStockRequest>(request).ConfigureAwait(false);
        }
#endif
#if NET40||NET35
        /// <summary>
        ///  添加共享带宽IP
        /// 
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public AddBandwidthPackageIpResponse AddBandwidthPackageIp(AddBandwidthPackageIpRequest request) {
            return  new AddBandwidthPackageIpExecutor().Client(this).Execute<AddBandwidthPackageIpResponse, AddBandwidthPackageIpResult, AddBandwidthPackageIpRequest>(request);
        }
#else
        /// <summary>
        ///  添加共享带宽IP
        /// 
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public async Task<AddBandwidthPackageIpResponse> AddBandwidthPackageIp(AddBandwidthPackageIpRequest request) {
            return await new AddBandwidthPackageIpExecutor().Client(this).Execute<AddBandwidthPackageIpResponse, AddBandwidthPackageIpResult, AddBandwidthPackageIpRequest>(request).ConfigureAwait(false);
        }
#endif
#if NET40||NET35
        /// <summary>
        ///  查询单台分布式云物理服务器详细信息
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public DescribeInstanceResponse DescribeInstance(DescribeInstanceRequest request) {
            return  new DescribeInstanceExecutor().Client(this).Execute<DescribeInstanceResponse, DescribeInstanceResult, DescribeInstanceRequest>(request);
        }
#else
        /// <summary>
        ///  查询单台分布式云物理服务器详细信息
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public async Task<DescribeInstanceResponse> DescribeInstance(DescribeInstanceRequest request) {
            return await new DescribeInstanceExecutor().Client(this).Execute<DescribeInstanceResponse, DescribeInstanceResult, DescribeInstanceRequest>(request).ConfigureAwait(false);
        }
#endif
#if NET40||NET35
        /// <summary>
        ///  查询分布式云物理服务器名称
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public DescribeInstanceNameResponse DescribeInstanceName(DescribeInstanceNameRequest request) {
            return  new DescribeInstanceNameExecutor().Client(this).Execute<DescribeInstanceNameResponse, DescribeInstanceNameResult, DescribeInstanceNameRequest>(request);
        }
#else
        /// <summary>
        ///  查询分布式云物理服务器名称
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public async Task<DescribeInstanceNameResponse> DescribeInstanceName(DescribeInstanceNameRequest request) {
            return await new DescribeInstanceNameExecutor().Client(this).Execute<DescribeInstanceNameResponse, DescribeInstanceNameResult, DescribeInstanceNameRequest>(request).ConfigureAwait(false);
        }
#endif
#if NET40||NET35
        /// <summary>
        ///  创建子网
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public CreateSubnetResponse CreateSubnet(CreateSubnetRequest request) {
            return  new CreateSubnetExecutor().Client(this).Execute<CreateSubnetResponse, CreateSubnetResult, CreateSubnetRequest>(request);
        }
#else
        /// <summary>
        ///  创建子网
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public async Task<CreateSubnetResponse> CreateSubnet(CreateSubnetRequest request) {
            return await new CreateSubnetExecutor().Client(this).Execute<CreateSubnetResponse, CreateSubnetResult, CreateSubnetRequest>(request).ConfigureAwait(false);
        }
#endif
#if NET40||NET35
        /// <summary>
        ///  添加别名IP
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public CreateAliasIpResponse CreateAliasIp(CreateAliasIpRequest request) {
            return  new CreateAliasIpExecutor().Client(this).Execute<CreateAliasIpResponse, CreateAliasIpResult, CreateAliasIpRequest>(request);
        }
#else
        /// <summary>
        ///  添加别名IP
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public async Task<CreateAliasIpResponse> CreateAliasIp(CreateAliasIpRequest request) {
            return await new CreateAliasIpExecutor().Client(this).Execute<CreateAliasIpResponse, CreateAliasIpResult, CreateAliasIpRequest>(request).ConfigureAwait(false);
        }
#endif
#if NET40||NET35
        /// <summary>
        ///  修改私有网络
        /// 
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public ModifyVpcResponse ModifyVpc(ModifyVpcRequest request) {
            return  new ModifyVpcExecutor().Client(this).Execute<ModifyVpcResponse, ModifyVpcResult, ModifyVpcRequest>(request);
        }
#else
        /// <summary>
        ///  修改私有网络
        /// 
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public async Task<ModifyVpcResponse> ModifyVpc(ModifyVpcRequest request) {
            return await new ModifyVpcExecutor().Client(this).Execute<ModifyVpcResponse, ModifyVpcResult, ModifyVpcRequest>(request).ConfigureAwait(false);
        }
#endif
#if NET40||NET35
        /// <summary>
        ///  查询某种实例类型的分布式云物理服务器支持的RAID类型，可查询系统盘RAID类型和数据盘RAID类型
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public DescribeDeviceRaidsResponse DescribeDeviceRaids(DescribeDeviceRaidsRequest request) {
            return  new DescribeDeviceRaidsExecutor().Client(this).Execute<DescribeDeviceRaidsResponse, DescribeDeviceRaidsResult, DescribeDeviceRaidsRequest>(request);
        }
#else
        /// <summary>
        ///  查询某种实例类型的分布式云物理服务器支持的RAID类型，可查询系统盘RAID类型和数据盘RAID类型
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public async Task<DescribeDeviceRaidsResponse> DescribeDeviceRaids(DescribeDeviceRaidsRequest request) {
            return await new DescribeDeviceRaidsExecutor().Client(this).Execute<DescribeDeviceRaidsResponse, DescribeDeviceRaidsResult, DescribeDeviceRaidsRequest>(request).ConfigureAwait(false);
        }
#endif
#if NET40||NET35
        /// <summary>
        ///  创建私有网络
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public CreateVpcResponse CreateVpc(CreateVpcRequest request) {
            return  new CreateVpcExecutor().Client(this).Execute<CreateVpcResponse, CreateVpcResult, CreateVpcRequest>(request);
        }
#else
        /// <summary>
        ///  创建私有网络
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public async Task<CreateVpcResponse> CreateVpc(CreateVpcRequest request) {
            return await new CreateVpcExecutor().Client(this).Execute<CreateVpcResponse, CreateVpcResult, CreateVpcRequest>(request).ConfigureAwait(false);
        }
#endif
#if NET40||NET35
        /// <summary>
        ///  重装分布式云物理服务器，只能重装stopped状态的服务器&lt;br/&gt;
        /// - 可调用接口（describeOS）获取分布式云物理服务器支持的操作系统列表
        ///  [MFA enabled]
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public ReinstallInstanceResponse ReinstallInstance(ReinstallInstanceRequest request) {
            return  new ReinstallInstanceExecutor().Client(this).Execute<ReinstallInstanceResponse, ReinstallInstanceResult, ReinstallInstanceRequest>(request);
        }
#else
        /// <summary>
        ///  重装分布式云物理服务器，只能重装stopped状态的服务器&lt;br/&gt;
        /// - 可调用接口（describeOS）获取分布式云物理服务器支持的操作系统列表
        ///  [MFA enabled]
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public async Task<ReinstallInstanceResponse> ReinstallInstance(ReinstallInstanceRequest request) {
            return await new ReinstallInstanceExecutor().Client(this).Execute<ReinstallInstanceResponse, ReinstallInstanceResult, ReinstallInstanceRequest>(request).ConfigureAwait(false);
        }
#endif
#if NET40||NET35
        /// <summary>
        ///  删除子网
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public DeleteSubnetResponse DeleteSubnet(DeleteSubnetRequest request) {
            return  new DeleteSubnetExecutor().Client(this).Execute<DeleteSubnetResponse, DeleteSubnetResult, DeleteSubnetRequest>(request);
        }
#else
        /// <summary>
        ///  删除子网
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public async Task<DeleteSubnetResponse> DeleteSubnet(DeleteSubnetRequest request) {
            return await new DeleteSubnetExecutor().Client(this).Execute<DeleteSubnetResponse, DeleteSubnetResult, DeleteSubnetRequest>(request).ConfigureAwait(false);
        }
#endif
#if NET40||NET35
        /// <summary>
        ///  申请弹性公网IP
        /// 
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public ApplyElasticIpsResponse ApplyElasticIps(ApplyElasticIpsRequest request) {
            return  new ApplyElasticIpsExecutor().Client(this).Execute<ApplyElasticIpsResponse, ApplyElasticIpsResult, ApplyElasticIpsRequest>(request);
        }
#else
        /// <summary>
        ///  申请弹性公网IP
        /// 
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public async Task<ApplyElasticIpsResponse> ApplyElasticIps(ApplyElasticIpsRequest request) {
            return await new ApplyElasticIpsExecutor().Client(this).Execute<ApplyElasticIpsResponse, ApplyElasticIpsResult, ApplyElasticIpsRequest>(request).ConfigureAwait(false);
        }
#endif
#if NET40||NET35
        /// <summary>
        ///  申请共享带宽
        /// 
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public ApplyBandwidthPackagesResponse ApplyBandwidthPackages(ApplyBandwidthPackagesRequest request) {
            return  new ApplyBandwidthPackagesExecutor().Client(this).Execute<ApplyBandwidthPackagesResponse, ApplyBandwidthPackagesResult, ApplyBandwidthPackagesRequest>(request);
        }
#else
        /// <summary>
        ///  申请共享带宽
        /// 
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public async Task<ApplyBandwidthPackagesResponse> ApplyBandwidthPackages(ApplyBandwidthPackagesRequest request) {
            return await new ApplyBandwidthPackagesExecutor().Client(this).Execute<ApplyBandwidthPackagesResponse, ApplyBandwidthPackagesResult, ApplyBandwidthPackagesRequest>(request).ConfigureAwait(false);
        }
#endif
#if NET40||NET35
        /// <summary>
        ///  删除次要CIDR
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public DeleteSecondaryCidrResponse DeleteSecondaryCidr(DeleteSecondaryCidrRequest request) {
            return  new DeleteSecondaryCidrExecutor().Client(this).Execute<DeleteSecondaryCidrResponse, DeleteSecondaryCidrResult, DeleteSecondaryCidrRequest>(request);
        }
#else
        /// <summary>
        ///  删除次要CIDR
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public async Task<DeleteSecondaryCidrResponse> DeleteSecondaryCidr(DeleteSecondaryCidrRequest request) {
            return await new DeleteSecondaryCidrExecutor().Client(this).Execute<DeleteSecondaryCidrResponse, DeleteSecondaryCidrResult, DeleteSecondaryCidrRequest>(request).ConfigureAwait(false);
        }
#endif

            /// <summary>
            ///  默认EdcpsClient 构造器 接口
            ///</summary>
            public interface Builder
            {

                /// <summary>
                /// 设置认证信息参数
                /// </summary>
                /// <param name="provider">认证信息提供对象</param>
                /// <returns>edcpsClient 构造器</returns>
                Builder CredentialsProvider(CredentialsProvider provider);

                /// <summary>
                /// 设置请求环境参数
                /// </summary>
                /// <param name="environment">环境参数信息</param>
                /// <returns>edcpsClient 构造器</returns>
                Builder Environment(Core.Client.SDKEnvironment environment);

                /// <summary>
                /// http 请求配置信息
                /// </summary>
                /// <param name="config">http 请求配置信息</param>
                /// <returns>edcpsClient 构造器</returns>
                Builder HttpRequestConfig(HttpRequestConfig config);

                /// <summary>
                ///  构造EdcpsClient 对象
                ///</summary>
                EdcpsClient Build();
            }

            /// <summary>
            ///  默认EdcpsClient 构造器
            ///</summary>
            public class DefaultBuilder : Builder
            {
                /// <summary>
                ///  EdcpsClient service client
                /// </summary>
                private  EdcpsClient edcpsClient;

                /// <summary>
                ///  默认EdcpsClient 构造器构造对象
                ///</summary>
                public DefaultBuilder()
                {
                    edcpsClient = new EdcpsClient();
                }

                /// <summary>
                ///  构造EdcpsClient 对象
                ///</summary>
                public EdcpsClient Build()
                {
                    if (edcpsClient.CredentialsProvider == null)
                    {
                        //if credentialsProvider not set, try load jdcloud global default  credentials provider
                        edcpsClient.credentialsProvider = JdCloud.DefaultInstance.GetCredentialsProvider();
                        if (edcpsClient.credentialsProvider == null)
                        {
                            throw new ArgumentNullException("EdcpsClient build error: jdcloud credentials provider not set");
                        }
                    }
                    if (edcpsClient.HttpRequestConfig == null)
                    {
                        edcpsClient.httpRequestConfig = JdCloud.DefaultInstance.GetHttpRequestConfig();
                        if (edcpsClient.httpRequestConfig == null)
                        {
                        throw new ArgumentNullException("EdcpsClient build error: http request config not set");
                        }
                    }
                    return edcpsClient;
                }

                /// <summary>
                /// 设置认证信息参数
                /// </summary>
                /// <param name="provider">认证信息提供对象</param>
                /// <returns>edcpsClient 构造器</returns>
                public Builder CredentialsProvider(CredentialsProvider provider)
                {
                    edcpsClient.credentialsProvider = provider;
                    return this;
                }

                /// <summary>
                /// 设置请求环境参数
                /// </summary>
                /// <param name="environment">环境参数信息</param>
                /// <returns>edcpsClient 构造器</returns>
                public Builder Environment(SDKEnvironment environment)
                {
                    edcpsClient.environment = environment;
                    return this;
                }

                /// <summary>
                /// http 请求配置信息
                /// </summary>
                /// <param name="config">http 请求配置信息</param>
                /// <returns>edcpsClient 构造器</returns>
                public Builder HttpRequestConfig(HttpRequestConfig config)
                {
                    edcpsClient.httpRequestConfig = config;
                    return this;
                }
            }
    }
}
